package com.example.zlpermissionservice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.zlpermissionservice.dto.request.ResourceReqDTO;
import com.example.zlpermissionservice.dto.response.MenuResDTO;
import com.example.zlpermissionservice.dto.response.ResourceResDTO;
import com.example.zlpermissionservice.dto.response.TreeResDTO;
import com.example.zlpermissionservice.entity.Resource;

import java.util.List;

/**
 * @Author zhenliu（孙凌岳）
 * @Description TODO
 * @Date 2025/6/15 19:31
 * @Version 1.0
 */
public interface IResourceService extends IService<Resource> {
    /**
     * 修改资源
     * @param resourceReqDTO
     * @return
     */
    Boolean updateResource(ResourceReqDTO resourceReqDTO);

    /**
     *  角色对应资源
     * @param roleIds 角色s
     * @return: List<Resource>
     */
    List<ResourceResDTO> findResourceResDTOListInRoleId(List<Long> roleIds);

    /**
     * 根据角色id获取角色对应资源
     * @param userId 角色id
     * @return
     */
    List<ResourceResDTO> findResourceResDTOListByUserId(Long userId);


    /**
     * 查询当前登录人的菜单
     * @return
     */
    List<MenuResDTO> menus(Long userId);

    /**
     * 查询当前登录人的按钮
     * @return
     */
    List<MenuResDTO> buttons(Long userId);

    /**
     * 多条件查询资源列表
     * @param resourceReqDTO
     * @return
     */
    List<ResourceResDTO> findResourceList(ResourceReqDTO resourceReqDTO);

    /**
     * 获取树形结构资源
     * @param resourceReqDTO
     * @return
     */
    TreeResDTO resourceTreeVo(ResourceReqDTO resourceReqDTO);


    /**
     * 删除资源
     * @param menuId
     * @return
     */
    Boolean deleteMenuById(String menuId);
}
